//package edu.fudan.jwxt.service.Impl;
//
//import cn.hutool.core.lang.Pair;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import edu.fudan.jwxt.Exception.ServiceException;
//
//import edu.fudan.jwxt.dao.CourseDao;
//import edu.fudan.jwxt.dao.CourseTeacherRequestDao;
//import edu.fudan.jwxt.dto.CourseTeacherRequestDto;
//import edu.fudan.jwxt.entity.Course;
//import edu.fudan.jwxt.entity.CourseTeacherRequest;
//import edu.fudan.jwxt.service.CourseService;
//import edu.fudan.jwxt.service.CourseTeacherRequestService;
//import edu.fudan.jwxt.service.CourseTimeVOService;
//import edu.fudan.jwxt.service.UserService;
//import edu.fudan.jwxt.utils.TimeUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.sql.Time;
//import java.util.ArrayList;
//import java.util.List;
//
//import static edu.fudan.jwxt.common.Constants.CODE_600;
//
//@Service
//public class CourseTeacherRequestServiceImpl
//        extends ServiceImpl<CourseTeacherRequestDao, CourseTeacherRequest>
//        implements CourseTeacherRequestService {
//    @Autowired
//    CourseTeacherRequestDao courseTeacherRequestDao;
//
//    @Autowired
//    CourseDao courseDao;
//
//    @Autowired
//    UserService userService;
//
//    @Autowired
//    CourseTimeVOService courseTimeVOService;
//
//    @Autowired
//    CourseService courseService;
//
//    @Override
//    public CourseTeacherRequestDto Transfer(CourseTeacherRequest courseTeacherRequest){
//        CourseTeacherRequestDto courseDto=new CourseTeacherRequestDto(courseTeacherRequest);
//        courseDto.setName(userService.getNameByUid(courseTeacherRequest.getTeacherId()));
//        String exactClassTimeString = courseTeacherRequest.getExactClassTimeString();
//        List<String> exactClassTimeStringToExactClassTime = TimeUtils.exactClassTimeStringToExactClassTime(exactClassTimeString);
//        List<Pair<Integer, Integer>> exactClassTimeToSpecificTime = TimeUtils.exactClassTimeToSpecificTime(exactClassTimeStringToExactClassTime);
//        courseDto.setCourseTime(TimeUtils.specificTimeToTime(exactClassTimeToSpecificTime));
//        if (exactClassTimeToSpecificTime.isEmpty()){
//            courseDto.setHours("0");
//        }else{
//            courseDto.setHours(String.valueOf(exactClassTimeToSpecificTime.size()));
//        }
//        return courseDto;
//    }
//
//    @Override
//    public List<CourseTeacherRequestDto> Transfer(List<CourseTeacherRequest> courseTeacherRequests){
//        List<CourseTeacherRequestDto> courseTeacherRequestDtos=new ArrayList<>();
//        for (CourseTeacherRequest c: courseTeacherRequests
//        ) {
//            courseTeacherRequestDtos.add(Transfer(c));
//        }
//        return courseTeacherRequestDtos;
//    }
//
//    // Ans代表admin的审批，是通过还是不通过看admin
//    @Override
//    public void dealWithApplications(boolean Ans,Integer RequestNum){
//        CourseTeacherRequest course_teacherRequest= courseTeacherRequestDao.selectById(RequestNum);
//        //System.out.println(course_teacherRequest.getTeacherId());
//        // 若Ans为false则什么也不干，不必干
//        if(Ans){
//            switch (course_teacherRequest.getOperation()){
//                case "insert": {
//                    Course tempCourse=new Course(course_teacherRequest);
//                    if(courseDao.selectById(tempCourse.getCourseId())==null){
//
//                        courseService.checkRoomTimeOccupy(tempCourse);
//                        List<Pair<Integer, Integer>> list = TimeUtils.exactClassTimeToSpecificTime(tempCourse.getExactClassTime());
//                        tempCourse.setCourseId(tempCourse.getCourseNumbering());
//                        if (list != null){
//                            tempCourse.setHours(String.valueOf(list.size()));
//                        }else{
//                            tempCourse.setHours("0");
//                        }
//                        tempCourse.setCourseTime(TimeUtils.specificTimeToTime(list));
//                        boolean flag=courseService.save(tempCourse);
//                        if (flag && list != null && !list.isEmpty()){
//                            courseTimeVOService.saveTimeByCourse(tempCourse.getCourseId(), list);
//                        }
//
//                    }
//                    else
//                        throw new ServiceException(CODE_600,"处理教师请求中添加失败");
//                    break;
//                }
//                case "modify":{
//                    Course tempCourse=new Course(course_teacherRequest);
//                    if(courseDao.selectById(tempCourse.getCourseId())!=null){
//                        courseService.checkRoomTimeOccupy(tempCourse);
//                        List<Pair<Integer, Integer>> list = TimeUtils.exactClassTimeToSpecificTime(tempCourse.getExactClassTime());
//                        tempCourse.setCourseId(tempCourse.getCourseNumbering());
//                        if (list != null){
//                            tempCourse.setHours(String.valueOf(list.size()));
//                        }else{
//                            tempCourse.setHours("0");
//                        }
//                        tempCourse.setCourseTime(TimeUtils.specificTimeToTime(list));
//                        boolean flag=courseService.updateById(tempCourse);
//                        if (flag && list != null && !list.isEmpty()){
//                            courseTimeVOService.saveTimeByCourse(tempCourse.getCourseId(), list);
//                        }
//                    }
//                    else
//                        throw new ServiceException(CODE_600,"处理教师请求中修改失败");
//                    break;
//                }
//                case "delete":{
//                    Course tempCourse= new Course(course_teacherRequest);
//                    if(courseDao.selectById(tempCourse.getCourseId())!=null)
//                        courseDao.deleteById(tempCourse);
//                    else
//                        throw new ServiceException(CODE_600,"处理教师请求中删除失败");
//                    break;
//                }
//                default: throw new ServiceException(CODE_600,"系统自己出问题了");
//            }
//
//        }
//        courseTeacherRequestDao.deleteById(RequestNum);
//
//
//    }
//}
//
//
//
